package cn.com.gridinfo.sooc.core.course.classes.activity;

import android.content.Intent;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
import android.graphics.Paint;
import android.graphics.PixelFormat;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.design.widget.TabLayout;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.view.ViewPager;
import android.view.KeyEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.DecelerateInterpolator;
import android.view.animation.TranslateAnimation;
import android.widget.EditText;
import android.widget.FrameLayout;
import android.widget.ImageButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;

import com.afollestad.materialdialogs.DialogAction;
import com.afollestad.materialdialogs.MaterialDialog;
import com.jeremy.arad.Arad;
import com.jeremy.arad.utils.Log;
import com.jeremy.arad.utils.StringUtils;
import com.squareup.picasso.Picasso;

import org.apache.http.message.BasicNameValuePair;

import butterknife.ButterKnife;
import butterknife.InjectView;
import butterknife.OnClick;
import cn.com.gridinfo.sooc.R;
import cn.com.gridinfo.sooc.SoocApplication;
import cn.com.gridinfo.sooc.base.BaseSoocActivity;
import cn.com.gridinfo.sooc.common.LocalMark;
import cn.com.gridinfo.sooc.core.course.classes.bean.CourseDetailsInfo;
import cn.com.gridinfo.sooc.core.course.classes.bean.EventCourse;
import cn.com.gridinfo.sooc.core.course.classes.dao.CourseDao;
import cn.com.gridinfo.sooc.core.course.classes.fragment.DocFragment;
import cn.com.gridinfo.sooc.core.course.classes.fragment.ImageFragment;
import cn.com.gridinfo.sooc.core.course.classes.fragment.VideoFragment;
import cn.com.gridinfo.sooc.core.course.classes.fragment.XitiFragment;
import cn.com.gridinfo.sooc.core.course.common.CodeConst;
import cn.com.gridinfo.sooc.core.course.common.ExtType;
import cn.com.gridinfo.sooc.core.course.directory.DirectoryFragment;
import cn.com.gridinfo.sooc.core.course.directory.bean.MenuDisplay;
import cn.com.gridinfo.sooc.core.course.discuss.DiscussFragment;
import cn.com.gridinfo.sooc.core.course.info.InfoFragment;
import cn.com.gridinfo.sooc.core.course.note.NoteFragment;
import cn.com.gridinfo.sooc.core.course.pay.activity.BuyCourseActivity;
import cn.com.gridinfo.sooc.core.course.pay.activity.PayOrderActivity;
import cn.com.gridinfo.sooc.core.my.order.MyOrderActivity;
import cn.com.gridinfo.sooc.utils.IntentUtil;
import cn.com.gridinfo.sooc.utils.MD5;
import cn.com.gridinfo.sooc.utils.MessageUtils;
import cn.com.gridinfo.sooc.utils.PagerAdapter;

/**
 * 课程详情界面
 * <p/>
 * 播放内容通过 eventBus 控制
 *
 * @author jie.li
 */
public class CourseDetailActivity extends BaseSoocActivity {

    String[] tabText = {"详情", "目录", "讨论", "笔记"};
    PagerAdapter adapter;//导航适配器

    /***
     * 课程布局
     ************************************************************/

    //播放内容区域
    @InjectView(R.id.content_contanier)
    RelativeLayout contentContanier;

    // 返回和收藏按钮 区域
    @InjectView(R.id.titlebtn_rlayout)
    RelativeLayout titlebtnRlayout;

    // 底部按钮区域
    @InjectView(R.id.bottom_btn_view)
    RelativeLayout bottomBtnView;

    //导航菜单区域
    @InjectView(R.id.course_nav_view)
    LinearLayout courseNavView;

    //遮罩区域
    @InjectView(R.id.shade_transparent)
    RelativeLayout shadeTrans;

    /***
     * 操作按钮
     ************************************************************/

    //收藏icon
    @InjectView(R.id.collectionIcon)
    ImageButton collectionIcon;


    //加密相关布局
    //加密课程文字
    @InjectView(R.id.course_pwd_layout)
    RelativeLayout coursePwdLayout;

    //加密提示按钮
    @InjectView(R.id.course_pwd_join)
    TextView coursePwdJoin;

    //未开放 按钮
    @InjectView(R.id.course_nosee_btn)
    RelativeLayout courseNosee;

    //未开放 按钮 文字
    @InjectView(R.id.course_nosee_tx)
    TextView courseNoseeTx;

    //加入课程按钮
    @InjectView(R.id.joinCourse_btn)
    RelativeLayout joinCourse;

    //购买相关布局
    @InjectView(R.id.course_buy_ll)
    LinearLayout courseBuyLayout;

    //立即购买按钮
    @InjectView(R.id.now_buy)
    TextView nowBuyBtn;

    //课程封面占位图
    @InjectView(R.id.course_kcfm)
    ImageView course_kcfm;

    //导航菜单 tab
    @InjectView(R.id.course_nav_tab)
    TabLayout navTabLayout;

    //导航页 pager
    @InjectView(R.id.viewpager_courseinfo)
    ViewPager mPagerView;

    //loading层
    @InjectView(R.id.course_loading)
    RelativeLayout course_loading;


    /***
     * 课程信息 变量
     ************************************************************/

    //课程详情 dao
    CourseDao dao;
    //课程详情 实体类
    CourseDetailsInfo courseDetailsInfo;
    //播放内容目录
    MenuDisplay menuDisplay;
    //课程ID
    String kcid;
    //课程封面 链接
    String kcfm;
    //默认ID:0,记录学习行为ID, 关闭当前学习页面时需要返回学习时的id
    //刚开始学习记录,每次更换素材记录,结束学习时候记录
    String studyId = "0";
    //播放类型 默认类型
    String playType = "video";

    /***
     * 导航动画 变量
     ************************************************************/
    //屏幕高度
    int screenHeight; //该高度不包含导航栏和状态栏的高度


    //底部按钮高度
    int bottomBtnHeight;

    int videoHeight;

    //导航 tab 高度
    int navTabHeight;
    //pager 高度 或者偏移量
    int yPagerDeta;


    //导航默认展开
    private boolean isNavShow = true;

    //获取网络信息
    NetworkInfo info;
    //是否继续在非 wifi 环境下播放
    public static Boolean isContinuePlay = false;

    String isNoOpenTx = "未开放";
    String isNoAuthTx = "未获得权限";

    //下一个播放素材
    MenuDisplay nextMenuDisplay;

    /**
     * create 初始化布局
     *
     * @param savedInstanceState
     */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.course_details);
        SoocApplication.fromJoinPayResult = 1;
        ButterKnife.inject(this);
        getWindow().setFormat(PixelFormat.TRANSLUCENT);//防止视屏刚开始闪一下屏.
//        mTintManager.setTintColor(getResources().getColor(R.color.blank));
        Arad.bus.register(this);
        isContinuePlay = false;//每次进入都要检查一遍是否 wifi 播放
//        showProgress(true);
        //获取课程id 和课程封面地址
        kcid = getIntent().getStringExtra("kcid");
        kcfm = getIntent().getStringExtra("kcfm");


        //初始化课程 dao
        dao = new CourseDao(this);

        //获取课程详情信息
        dao.getCourseInfo(kcid);


        //如果现实课程加密文字提示,文字需要有下划线样式设置
        coursePwdJoin.getPaint().setFlags(Paint.UNDERLINE_TEXT_FLAG); //下划线
        coursePwdJoin.getPaint().setAntiAlias(true);//抗锯齿


    }

    /**
     * 课程请求成功,请求成功
     */
    @Override
    public void onRequestSuccess(int requestCode) {
        try {
            if (dao.status.equals("0")) {
                switch (requestCode) {

                    //获取课程详细信息
                    case CodeConst.COURSE_INFO:
                        //获取课程详情信息(无课程ID)
                        courseDetailsInfo = dao.getCourseDetailsInfo();
                        //设置课程ID
                        courseDetailsInfo.setKcid(kcid);
                        //课程封面赋值
                        kcfm = courseDetailsInfo.getKcfm();
                        //初始化课程界面
                        initCourseView();
                        course_loading.setVisibility(View.GONE);

                        break;

                    //课程收藏
                    case CodeConst.COURSE_COLLECTION:
                        if (dao.isSuccess.equals("0")) {
                            MessageUtils.showImageShortToast(this, "收藏失败");
                        } else {
                            MessageUtils.showRightImageShortToast(this, "已收藏");
                            courseDetailsInfo.setYhsc(1);
                        }
                        //更新收藏图标
                        initCollectionIcon();
                        break;

                    //取消课程收藏
                    case CodeConst.COURSE_DELCOLLECTION:
                        if (dao.isSuccess.equals("0")) {
                            MessageUtils.showImageShortToast(this, "取消收藏失败");
                        } else {
                            MessageUtils.showRightImageShortToast(this, "已取消收藏");
                            courseDetailsInfo.setYhsc(0);
                        }
                        //更新收藏图标
                        initCollectionIcon();
                        break;

                    //课程加入
                    case CodeConst.COURSE_ADDMY:
                        if (dao.isSuccess.equals("0")) {
                            MessageUtils.showImageShortToast(this, "加入课程失败");
                        } else {
                            MessageUtils.showRightImageShortToast(this, "加入课程成功");
                            courseDetailsInfo.setSelect(1);
                            //学习人数加1
                            courseDetailsInfo.setXxrs(courseDetailsInfo.getXxrs() + 1);
//                            mPagerView.getAdapter().notifyDataSetChanged();
//                            Arad.bus.post(new EventCode(100));
                        }

                        //判断是不是输入密码后进行加入课程操作,解密成功,加入课程后自动播放当前内容
                        if (courseDetailsInfo.getIsEncrypt() == 1) {
                            //设置课程加密标识
                            courseDetailsInfo.setIsEncrypt(0);
                            //更新加入按钮
                            initCourseBottomBtn();
                            //初始化布局高度
                            initCourseLayoutViewHeight();

                            //设置当前的播放内容
                            setPlayContent();
                        } else {
                            //更新加入按钮
                            initCourseBottomBtn();
                            //初始化布局高度
                            initCourseLayoutViewHeight();

                        }
                        break;
                    //记录学习行为
                    case CodeConst.COURSE_SETBEHAVIOR_START:
                        studyId = dao.studyId;//记录学习行为ID
                        break;

                }
            } else {
                MessageUtils.showImageShortToast(this, dao.statusCode);
            }

        } catch (Exception e) {
            Log.e(e.getMessage(), e);
            MessageUtils.showImageShortToast(this, "请求数据异常");
        }
    }

    /********************* 初始化界面布局 开始 ******************************************/
    /**
     * 初始化课程界面布局
     * 导航菜单.收藏.加入课程
     */
    private void initCourseView() {

        //收藏
        initCollectionIcon();

        //初始化导航菜单
        initNavigationView();

        //加入课程图标初始化
        initCourseBottomBtn();

        //获取手机屏幕参数高度
        initGetScreenParamsHeight();

        //布局高度 初始化
        initCourseLayoutViewHeight();


    }

    //收藏图标 初始化
    private void initCollectionIcon() {
        //收藏
        //已收藏课程 1  未收藏 0
        if (1 == courseDetailsInfo.getYhsc()) {
            //设置已收藏标示
            collectionIcon.setImageResource(R.mipmap.ic_collect);
        } else {
            //设置未收藏标示
            collectionIcon.setImageResource(R.mipmap.ic_collect_no);
        }
    }

    //导航菜单 初始化
    private void initNavigationView() {
        adapter = new PagerAdapter(getSupportFragmentManager());
        adapter.addFragment(InfoFragment.newInstance(courseDetailsInfo), tabText[0]);//详情页面
        adapter.addFragment(DirectoryFragment.newInstance(courseDetailsInfo), tabText[1]);//目录页面
        adapter.addFragment(DiscussFragment.newInstance(courseDetailsInfo), tabText[2]);//讨论页面
        adapter.addFragment(NoteFragment.newInstance(courseDetailsInfo), tabText[3]);//笔记页面
        for (int i = 0; i < tabText.length; i++) {
            navTabLayout.addTab(navTabLayout.newTab().setText(tabText[i]));
        }
        mPagerView.setAdapter(adapter);
        mPagerView.setOffscreenPageLimit(adapter.getCount());
        navTabLayout.setupWithViewPager(mPagerView);
//        initViewPagerScroll();
        navTabLayout.setOnTabSelectedListener(new TabLayout.OnTabSelectedListener() {
            @Override
            public void onTabSelected(TabLayout.Tab tab) {
                setNavAnimation();
                mPagerView.setCurrentItem(tab.getPosition(), false);
                Log.d("onTabSelected>>" + tab.getPosition());
            }

            @Override
            public void onTabUnselected(TabLayout.Tab tab) {
                Log.d("onTabUnselected>>" + tab.getPosition());
            }

            @Override
            public void onTabReselected(TabLayout.Tab tab) {
                setNavAnimation();
                Log.d("onTabReselected>>" + tab.getPosition());
//                setNavAnimation();
            }
        });

        //默认展示目录
        TabLayout.Tab tab = navTabLayout.getTabAt(1);
        tab.select();     //默认展示目录

    }

    //加密课程,加入课程按钮,未开放按钮 初始化
    private void initCourseBottomBtn() {
        //底部按钮高度 默认0 未开放有高度，未加入有高度，未开放权限有高度
        bottomBtnHeight = 0;

        //未开放 判断课程是否锁定 1锁定 0未锁定
        if (1 == courseDetailsInfo.getKcsd()) {
            //设置按钮为未开放状态
            courseNosee.setVisibility(View.VISIBLE);
            courseNoseeTx.setText(isNoOpenTx);
            //隐藏加入按钮
            joinCourse.setVisibility(View.GONE);
            //隐藏课程加密按钮
            coursePwdLayout.setVisibility(View.GONE);
            //默认课程封面加载
            Picasso.with(this).load(kcfm).error(R.mipmap.course_placeholder).into(course_kcfm);
            //底部按钮高度
            bottomBtnHeight = getResources().getDimensionPixelOffset(R.dimen.bottom_height);
        }
        /*************课程已开放 **********************************/
        //课程开放
        else {
            courseNosee.setVisibility(View.GONE);//未锁定

            /**判断是不是课程制作人,是隐藏加入课程按钮 1 课程制作人 0 不是课程制作人*/
            //是课程制作人
            if (1 == courseDetailsInfo.getKcls()) {
                //隐藏加入课程按钮
                joinCourse.setVisibility(View.GONE);
                //隐藏课程加密按钮
                coursePwdLayout.setVisibility(View.GONE);

                //默认课程封面加载
                Picasso.with(this).load(kcfm).error(R.mipmap.course_placeholder).into(course_kcfm);

            }
            /********** 判断平台收费 课程是否收费 ****************************/
            else if (courseDetailsInfo.getIs_charge().equals("1") && Arad.preferences.getBoolean(LocalMark.IS_PAY.getName())) {
                payBtnShow();
            }
            /*************不是课程制作人 **********************************/
            //是否加入课程 1:加入 0:未加入
            //已加入
            else if (1 == courseDetailsInfo.getSelect()) {
                if (courseDetailsInfo.getIs_charge().equals("1") && Arad.preferences.getBoolean(LocalMark.IS_PAY.getName())
                        && courseDetailsInfo.getIsBuy() == 1) {
                    payBtnShow();
                } else {
                    joinedCourseShow();
                }
            }
            /*************未加入课程 **********************************/
            //是否有权限 1
            //有权限
            else if (1 == courseDetailsInfo.getIsAuth()) {
                joinCourse.setVisibility(View.VISIBLE);
                //隐藏课程加密按钮
                coursePwdLayout.setVisibility(View.GONE);
                //默认课程封面加载
                Picasso.with(this).load(kcfm).error(R.mipmap.course_placeholder).into(course_kcfm);
                //底部按钮高度
                bottomBtnHeight = getResources().getDimensionPixelOffset(R.dimen.bottom_height);
            }
            //没有权限 0 未实名认证或者人数已满
            else if (0 == courseDetailsInfo.getIsAuth()) {
                //设置按钮为未开放状态
                courseNosee.setVisibility(View.VISIBLE);
                courseNoseeTx.setText(isNoAuthTx);
                //隐藏加入按钮
                joinCourse.setVisibility(View.GONE);
                //隐藏课程加密按钮
                coursePwdLayout.setVisibility(View.GONE);
                //默认课程封面加载
                Picasso.with(this).load(kcfm).error(R.mipmap.course_placeholder).into(course_kcfm);
                //底部按钮高度
                bottomBtnHeight = getResources().getDimensionPixelOffset(R.dimen.bottom_height);
            }
            //判断是否加密1 加密 0 未加密
            else if (1 == courseDetailsInfo.getIsEncrypt()) {
                joinCourse.setVisibility(View.GONE);
                //显示课程加密按钮
                coursePwdLayout.setVisibility(View.VISIBLE);

                //设置加密图片背景
                course_kcfm.setImageBitmap(null);
                course_kcfm.setImageResource(R.mipmap.course_pwd_bg);
            }
            //既不是课程制作人,有权限，没加密，未加入课程,则显示课程加入按钮
            else {
                joinCourse.setVisibility(View.VISIBLE);
                //隐藏课程加密按钮
                coursePwdLayout.setVisibility(View.GONE);
                //默认课程封面加载
                Picasso.with(this).load(kcfm).error(R.mipmap.course_placeholder).into(course_kcfm);
                //底部按钮高度
                bottomBtnHeight = getResources().getDimensionPixelOffset(R.dimen.bottom_height);
            }
        }
    }

    //加入课程的显示
    void joinedCourseShow() {
        //隐藏加入课程按钮
        joinCourse.setVisibility(View.GONE);
        //隐藏课程加密按钮
        coursePwdLayout.setVisibility(View.GONE);
        //默认课程封面加载
        Picasso.with(this).load(kcfm).error(R.mipmap.course_placeholder).into(course_kcfm);
    }

    //收费相关显示
    void payBtnShow() {
        //隐藏加入课程按钮
        joinCourse.setVisibility(View.GONE);
        //隐藏课程加密按钮
        coursePwdLayout.setVisibility(View.GONE);
        //显示购买相关按钮
        courseBuyLayout.setVisibility(View.VISIBLE);
        //判断课程是否有订单 有订单 显示去支付按钮  没有订单 显示立即购买按钮
        if (courseDetailsInfo.getIsBuy() == 2) {
            nowBuyBtn.setText("去支付");
            //底部按钮高度
            bottomBtnHeight = getResources().getDimensionPixelOffset(R.dimen.bottom_height);
        } else if (courseDetailsInfo.getIsBuy() == 0) {
            nowBuyBtn.setText("立即购买");
            //底部按钮高度
            bottomBtnHeight = getResources().getDimensionPixelOffset(R.dimen.bottom_height);
        } else {
            //购买成功 相当于已加入课程
            joinedCourseShow();
            courseBuyLayout.setVisibility(View.GONE);
        }
        //默认课程封面加载
        Picasso.with(this).load(kcfm).error(R.mipmap.course_placeholder).into(course_kcfm);

    }

    //获取屏幕内参数高度值
    private void initGetScreenParamsHeight() {
        /********** 手机状态栏 导航栏高度 计算*********************************/
        //屏幕整体高度
        screenHeight = getScreenHeight();
        Log.d("屏幕整体高度:" + screenHeight);
    }

    //课程学习页面布局高度 初始化
    private void initCourseLayoutViewHeight() {

        /********** 课程界面布局按钮高度 计算*********************************/
        //视频高度
        videoHeight = StringUtils.getScreenWidth(this) * 9 / 16;

        Log.d("课程页面底部按钮高度:" + bottomBtnHeight);
        //导航菜单+pager 高度
        int courseNavViewHeight = screenHeight - videoHeight - bottomBtnHeight; //courseNavView.getLayoutParams().height = (screenHeight* 61/100)- bottomBtnHeight;


        Log.d("课程导航 tab+pager页面高度:" + courseNavViewHeight);
        //导航tab的高度
        int y1 = navTabLayout.getTop();
        int y2 = navTabLayout.getBottom();
        navTabHeight = y2 - y1;
        Log.d("课程导航 tab高度:" + navTabHeight);

        //偏移量 也是pager 高度
        yPagerDeta = courseNavViewHeight - navTabHeight;
        Log.d("偏移量 也是pager 高度:" + yPagerDeta);

        //重绘界面布局
        repaintViewLayout(courseNavViewHeight);
    }


    /********************** 初始化界面布局 结束 *****************************************/


    /********************* 初始播放内容 开始 ******************************************/
    /**
     * 更新播放内容
     * 实时更新播放素材内容
     *
     * @param eventCourse 播放素材实体
     */
    public void onEventMainThread(EventCourse eventCourse) {
        //获取当前素材
        menuDisplay = eventCourse.getMenuDisplay();
        //获取下一个素材
        nextMenuDisplay = eventCourse.getNextDisplay();
        if (menuDisplay == null) {
            course_loading.setVisibility(View.GONE);
            return;
        }

        //不是课程老师，并且是未加入课程
        if (courseDetailsInfo.getKcls() == 0 && courseDetailsInfo.getSelect() == 0) {
            //有课程权限
            if (courseDetailsInfo.getIsAuth() == 1) {
                //直接跳到最后直接播放

            }
            //权限： 没有课程权限
            else if (courseDetailsInfo.getIsAuth() == 0) {
                //初始化进入界面,自动播放时(false),不需要显示密码框,只有手动点击(true)时操作才需要显示密码框
                if (eventCourse.getFlag()) {
                    DirectoryFragment.adapter.setSelectorRefresh(menuDisplay.getGpositon(), menuDisplay.getSpositon());//设置选中
                    MessageUtils.showImageShortToast(this, courseDetailsInfo.getAuthMsg());
                }
                course_loading.setVisibility(View.GONE);
                return;
            }
            // 加密：课程已加密
            else if (courseDetailsInfo.getIsEncrypt() == 1) {
                //初始化进入界面,自动播放时(false),不需要显示密码框,只有手动点击(true)时操作才需要显示密码框
                if (eventCourse.getFlag()) {
                    DirectoryFragment.adapter.setSelectorRefresh(menuDisplay.getGpositon(), menuDisplay.getSpositon());//设置选中
                    showCoursePwdDialog();
                } else {
                    //从列表页进入加密课程
                    course_kcfm.setImageBitmap(null);
                    course_kcfm.setImageResource(R.mipmap.course_pwd_bg);
                }
                course_loading.setVisibility(View.GONE);
                return;
            }
        }

        //设置播放内容
        setPlayContent();
    }

    //设置播放内容 视频 文档 图片 习题
    private void setPlayContent() {
        if (menuDisplay == null) {
            course_loading.setVisibility(View.GONE);
            return;
        }
//        //结束上次一播放内容学习行为
//        if (!studyId.equals("0")) {
//            dao.setBehavior(courseDetailsInfo.getKcid(), courseDetailsInfo.getCurrPmId(), courseDetailsInfo.getCurrMlId(), courseDetailsInfo.getCurrNrId(), studyId);
//            Log.d("播放记录记录停止..."+courseDetailsInfo.getCurrNrId());
//        }
        //设置当前播放内容
        courseDetailsInfo.setCurrPmId(menuDisplay.getPmid());//章ID
        courseDetailsInfo.setCurrMlId(menuDisplay.getSmid());//节 id
        courseDetailsInfo.setCurrNrId(menuDisplay.getNrid());//内容ID
        courseDetailsInfo.setCurrSubName(menuDisplay.getSmmc());//节名称

        //设置播放内容界面
        Fragment fragment = setDisplayView();
        FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
        transaction.replace(R.id.content_contanier, fragment);
        transaction.addToBackStack(null);
        transaction.commitAllowingStateLoss();
        Arad.bus.post(courseDetailsInfo);
//        //记录当前播放内容开始学习行为,并且不是课程老师
//        if (courseDetailsInfo.getKcls() == 0) {
//            dao.setBehavior(courseDetailsInfo.getKcid(), courseDetailsInfo.getCurrPmId(), courseDetailsInfo.getCurrMlId(), courseDetailsInfo.getCurrNrId(), "0",);
//            Log.d("播放记录开始记录..."+courseDetailsInfo.getCurrNrId());
//        }
        DirectoryFragment.adapter.setSelectorRefresh(menuDisplay.getGpositon(), menuDisplay.getSpositon());//设置选中
    }


    //设置播放内容界面
    private Fragment setDisplayView() {
        Fragment fragment = null;


//        获取播放素材类型
        playType = ExtType.getExtTypeClass(menuDisplay.getNrlx());
        course_kcfm.setImageBitmap(null);
        //设置遮罩层消失
        shadeTrans.setVisibility(View.GONE);
        //视频类型
        if (playType.equals("video")) {
            Log.d("视频显示页面 url-->" + menuDisplay.getFile());
            //视频页面
            fragment = VideoFragment.newInstance(courseDetailsInfo, menuDisplay, videoHeight, nextMenuDisplay);
            isNavShow = true;

        }
        //文档类型
        else if (playType.equals("doc")) {
            //显示文档页面
            Log.d("文档显示页面 url-->" + menuDisplay.getNewfile());
            fragment = DocFragment.newInstance(courseDetailsInfo, menuDisplay.getNewfile(), menuDisplay.getNrlx());

            //重绘播放区域
            isNavShow = false;
        }
        //图片类型
        else if (playType.equals("photo")) {
            Log.d("图片显示页面 url-->" + menuDisplay.getFile());
            //图片页面
            fragment = ImageFragment.newInstance(courseDetailsInfo, menuDisplay.getFile());
            isNavShow = false;
        }
        //习题类型
        else if (playType.equals("-1")) {
            Log.d("播放习题 ->");
//            MessageUtils.showShortToast(this,"播放习题");
            String url = Arad.preferences.getString(LocalMark.SERVER_URL.getName(), "")
                    + "/mobile-views/show.html?/application:'exercises',arguments:/uid:'"
                    + Arad.preferences.getString(LocalMark.USER_UID.getName(), "") + "',kcid:'"
                    + kcid + "',mlid:'"
                    + menuDisplay.getSmid() + "',nrid:'"
                    + menuDisplay.getNrid() + "',pmlid:'"
                    + menuDisplay.getPmid() + "'&,token:'"
                    + Arad.preferences.getString(LocalMark.OUATH_TOKEN.getName(), "") + ","
                    + Arad.preferences.getString(LocalMark.OAUTH_TOKEN_SECRET.getName(), "") + "'&";
            url = url.replaceAll("//mob", "/mob");

            Log.d("习题 url:" + url);
            //图片页面
            fragment = XitiFragment.newInstance(courseDetailsInfo, url);
            isNavShow = false;
        }
        //播放文件类型错误
        else {
            Log.d("其他类型:[" + menuDisplay.getNrlx() + "]显示页面 url-->" + menuDisplay.getFile());
            //其他类型错误播放页面
            //图片页面
            fragment = DocFragment.newInstance(courseDetailsInfo, menuDisplay.getFile(), playType);
            isNavShow = false;
            MessageUtils.showImageShortToast(this, "播放的文件格式错误");
        }

        repaintViewLayout(navTabHeight + yPagerDeta);
        course_loading.setVisibility(View.GONE);
        return fragment;

    }

    /********************* 初始播放内容 结束 ********************************************/

    /******************************
     * 点击事件  开始
     **********************************/
    //回退键 点击
    @OnClick(R.id.backIcon)
    void onClick() {
        //从我的-订单-支付结果来的，返回时，回到我的订单，否则，直接finish
        String from = getIntent().hasExtra("from") ? getIntent().getStringExtra("from") : "";
        if (from.equals("payResult")) {
            Intent intent = new Intent();
            intent.setClass(this, MyOrderActivity.class);
            intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);//它可以关掉所要到的界面中间的activity
            startActivity(intent);
        }
        finish();
    }

    @Override
    public void onBackPressed() {
        onClick();
    }

    //收藏按钮 点击
    @OnClick(R.id.collectionIcon)
    void onCollectionClick() {
        //收藏
        //已收藏课程 1  未收藏 0
        //当前是收藏状态,,点击取消收藏
        if (1 == courseDetailsInfo.getYhsc()) {
            //调用取消收藏接口
            dao.delCollection(kcid);
            setResult(RESULT_OK);//我的课程中已收藏 点击进来后 点击取消收藏 置返回值
        } else {
            //当前是为收藏,点击调用收藏接口
            dao.addCollection(kcid);
        }
    }

    //加入课程 点击
    @OnClick(R.id.joinCourse_btn)
    void onJoinCourseClick() {
        //加入课程接口
        dao.joinCourse(kcid);
    }

    //加入课程 点击
    @OnClick(R.id.course_pwd_layout)
    void onJoinPwdCourseClick() {
        //弹出课程加密框
        showCoursePwdDialog();
    }

    //点击免费试学
    @OnClick(R.id.free_study)
    void onFreeStudy() {
        //判断是否有素材
        if (DirectoryFragment.adapter.isHasCourseSucai()) {
            menuDisplay = DirectoryFragment.adapter.getFristSucai();
            //是否有第一个素材
            if (menuDisplay == null) {
                MessageUtils.showImageShortToast(this, "暂无免费试学内容");
            } else {
                //播放第一个素材
                setPlayContent();
            }
        } else {
            MessageUtils.showImageShortToast(this, "暂无可查看内容");
        }
    }

    //点击 立即购买
    @OnClick(R.id.now_buy)
    void onNowBuyClick() {
        if (nowBuyBtn.getText().toString().trim().equals("立即购买")) {
            //进入购买课程页面
            IntentUtil.intentSlidIn(this, BuyCourseActivity.class, 00, new BasicNameValuePair("kcid", courseDetailsInfo.getKcid()),
                    new BasicNameValuePair("kcmc", courseDetailsInfo.getKcmc()), new BasicNameValuePair("price", courseDetailsInfo.getPrice()),
                    new BasicNameValuePair("kcls", courseDetailsInfo.getUname()), new BasicNameValuePair("kcfm", courseDetailsInfo.getKcfm()));
        } else {
            //进入支付页面
            IntentUtil.intentSlidIn(this, PayOrderActivity.class, 00, new BasicNameValuePair("kcid", courseDetailsInfo.getKcid()),
                    new BasicNameValuePair("kcmc", courseDetailsInfo.getKcmc()), new BasicNameValuePair("price", courseDetailsInfo.getPrice()),
                    new BasicNameValuePair("kcls", courseDetailsInfo.getUname()));
        }
    }

    //课程密码弹出框
    public void showCoursePwdDialog() {

        MaterialDialog.Builder dilog = new MaterialDialog.Builder(this);
        dilog.customView(R.layout.course_pwd_dialog, false).backgroundColorRes(R.color.white)
                .title("输入课程密码").titleColorRes(R.color.color_tv333)
                .positiveText(R.string.agree).positiveColorRes(R.color.colorAccent)
                .negativeText(R.string.disagree).negativeColorRes(R.color.color_666)
                .onPositive(new MaterialDialog.SingleButtonCallback() {
                    @Override
                    public void onClick(@NonNull MaterialDialog materialDialog, @NonNull DialogAction dialogAction) {
                        EditText input = (EditText) materialDialog.findViewById(R.id.course_pwd);
                        String inputPwd = MD5.encode(input.getText().toString().trim());
                        //比对密码
                        if (inputPwd.equals(courseDetailsInfo.getCoursePwd())) {
                            //解密成功 加入课程
                            dao.joinCourse(kcid);
                            materialDialog.dismiss();
                        } else {
                            MessageUtils.showImageShortToast(CourseDetailActivity.this, "课程密码输入错误！");
                        }

                    }

                })
                .onNegative(new MaterialDialog.SingleButtonCallback() {
                    @Override
                    public void onClick(@NonNull MaterialDialog materialDialog, @NonNull DialogAction dialogAction) {
//
                        materialDialog.dismiss();
                    }
                })
                .autoDismiss(false).show();

    }


    //遮罩层 点击收起导航
    @OnClick(R.id.shade_transparent)
    void packUpNav() {
        if (!playType.equals("video"))
            if (isNavShow) {
                if (courseNavView.getAnimation() != null && !courseNavView.getAnimation().hasEnded()) {
                    return;
                }
                //当前是展开状态,点击收起
                slideNav(courseNavView, yPagerDeta, (navTabHeight));
                isNavShow = false;
                shadeTrans.setVisibility(View.GONE);
            }
    }
    /********************* 点击事件 结束******************************************/


    /*********************
     * 动画部分 开始
     ****************************************************************************************/
    //设置导航动画
    private void setNavAnimation() {
        //视频不需要动画,只有非视频素材才需要
        //并且只有收起的时候 导航上才有动画
        if (!playType.equals("video")) {
            if (!isNavShow) {
                if (courseNavView.getAnimation() != null && !courseNavView.getAnimation().hasEnded()) {
                    return;
                }
                //点击展开
//                setLayoutParam(navTabHeight+ydeta);
                slideNav(courseNavView, -yPagerDeta, (navTabHeight + yPagerDeta));
                isNavShow = true;
                shadeTrans.setVisibility(View.VISIBLE);
            }

//            else {
//                if (courseNavView.getAnimation() != null && !courseNavView.getAnimation().hasEnded()) {
//                    return;
//                }
//                //当前是展开状态,点击收起
//                slideNav(courseNavView, yPagerDeta, (navTabHeight));
//                isNavShow = false;
//            }
        }

    }

    /**
     * 导航动画效果
     *
     * @view 要移动的布局
     * @ydeta 偏移量
     * @courseNavHeight 导航菜单(导航+ pager)所占布局高度(tab 高度 或者 tab+pager 高度)
     */
    //动画执行时间 500毫秒
    int durationMillis = 500;

    public void slideNav(final View view, final int ydeta, final int courseNavHeight) {
        TranslateAnimation animation = new TranslateAnimation(0, 0, 0, ydeta);
        animation.setInterpolator(new DecelerateInterpolator());
        animation.setDuration(durationMillis);
        animation.setAnimationListener(new Animation.AnimationListener() {
            @Override
            public void onAnimationStart(Animation animation) {
            }

            @Override
            public void onAnimationRepeat(Animation animation) {
            }

            @Override
            public void onAnimationEnd(Animation animation) {
                view.clearAnimation();
                //动画结束重新绘制
                repaintNavLayout(courseNavHeight);


            }
        });
        view.startAnimation(animation);
    }

    private void repaintViewLayout(int courseTabNavHeight) {
        //如果导航是收起来的,
        if (!isNavShow) {
            courseTabNavHeight = courseTabNavHeight - yPagerDeta;
        }
        repaintNavLayout(courseTabNavHeight);
        repaintContainerLayout(courseTabNavHeight);
    }

    /**
     * 重绘导航布局
     *
     * @param courseTabNavHeight 导航 tab 高度 或者导航 tab+pager 高度
     * @return
     */
    private void repaintNavLayout(int courseTabNavHeight) {

        FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
        videoHeight = params.topMargin = screenHeight - courseTabNavHeight - bottomBtnHeight;
        if (!isNavShow) {
            params.bottomMargin = -(yPagerDeta);
        } else {
            params.bottomMargin = bottomBtnHeight;
        }
        courseNavView.setLayoutParams(params);

    }

    /**
     * 绘制播放内容布局
     *
     * @param courseTabNavHeight 导航 tab 高度 或者导航 tab+pager 高度
     * @return
     */
    private void repaintContainerLayout(int courseTabNavHeight) {
        FrameLayout.LayoutParams cparams = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
        cparams.topMargin = 0;
        cparams.height = videoHeight;
        contentContanier.setLayoutParams(cparams);

    }

    //获取屏幕高度(不包含 statusbar 和 navigationbar 的高度)
    public int getScreenHeight() {
        return findViewById(android.R.id.content).getHeight();
    }
    /********************* 动画部分 开始***************************************************************************************************************/
    /**
     * 屏幕方向改变时 (全屏)
     *
     * @param newConfig
     */
    @Override
    public void onConfigurationChanged(Configuration newConfig) {
        //正常 竖屏状态
        if (newConfig.orientation == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) {
            titlebtnRlayout.setVisibility(View.VISIBLE);
            bottomBtnView.setVisibility(View.VISIBLE);
            courseNavView.setVisibility(View.VISIBLE);
            repaintContainerLayout(navTabHeight + yPagerDeta);
            mTintManager.setTintResource(R.color.colorPrimaryDark);
        }
        //横屏
        else {
            titlebtnRlayout.setVisibility(View.GONE);
            bottomBtnView.setVisibility(View.GONE);
            courseNavView.setVisibility(View.GONE);
            FrameLayout.LayoutParams cparams = new FrameLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
            contentContanier.setLayoutParams(cparams);

            mTintManager.setTintResource(R.color.transparent);
        }


        super.onConfigurationChanged(newConfig);
    }


    //界面销毁
    @Override
    protected void onDestroy() {
        super.onDestroy();
        Arad.bus.unregister(this);
        DirectoryFragment.adapter = null;
        DirectoryFragment.nextMenuDisplay = null;
        isContinuePlay = null;
    }


    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN) {
            //如果处于横屏状态
            if (getRequestedOrientation() == ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) {
                // 退出应用
                finish();
            }
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

}
